CorrupTool32 v2.1.1.0 Final README

This file explains each component of CT's interface, INCLUDING SECRET FEATURES (see last two sections).

Table of contents:
1. Corrupt File Box.
2. Corruption Settings Box.
3. Corruption Addresses Box.
4. Search For Byte Box.
5. Address Testing (Hex Old-New-Address Patcher) Box.
6. Corrupted File Testing Box.
7. Secret features.

1. Corrupt File

Now working with file - Field, showing current working file. File name is red if file is not corrupted. After corrupting it, it turns yellow.
Select File... - Press to choose file you want to corrupt.
Corrupt Selected File... - Perform corruption with specified settings.
New Random FileName for Corrupted File - Randomize filename of corrupted file (in random filename mode).
Make Log - Writes log for corruption, if you want it.
Overwrite current file - Overwrites original file. Of course, you should either make backup yourself, or uncheck it and let CT handle it.
Hide window when processing - Corrupting large files can take some time. While processing, window is not being redrawn, which can get ugly. So, if you corrupting large files, be sure to check this option.

2. Corruption Settings

Number of bytes to search - Tells CT how much bytes you want to search and corrupt*.
Write Random - Corrupt file with random values.
Write Zeroes - Corrupt file with 00 bytes.
Write Specified Value - Corrupt file with value, specified in box below.
Randomize - Re-initialize random number generator.
Auto Randomize - Re-initialize random number generator automatically before each corruption.
Increase By - Corrupt by increasing values by value in box below. If value gets over FF (255), it continues from 00 (i.e. FF + 02 = 01).
Decrease By - Corrupt by decreasing values by value in box below. If value gets under 00, it continues from FF (255) (i.e. 00 - 02 = FE).
Corrupted FileName - Shows name of corrupted file. If "Overwrite current file" is checked, it's same as original file. If you want to change it, enter new filename and click "Set...". File name is red if file is not corrupted. After corrupting it, it turns yellow.
Set... - Sets filename of corrupted file.

* - Note, that this may be not exactly amount of bytes corrupted.
1) It tells how much "searches" you want to perform. I.e. if program finds byte that doesn't matches criteria set in "Search For Byte" box, it will be considered "searched", but won't be corrupted. That was done to avoid infinite loop if file doesn't contains bytes that matches search criteria.
2) In small files with "Random adresses" corruption, it's quite possible for corruptions to collide (as program doesn't check if address was corrupted already, it may corrupt it twice or more times). So again, number of "searched" bytes may be diffirent from number of actually corrupted bytes.

3. Corruption Adderesses

Corrupt single address (HEX) - Corrupt single specified address.
Corrupt address range (HEX) - Corrupt RANDOM bytes in specified address range.
Corrupt all bytes in range - Sequentially corrupt every byte in specified address range ("Number of bytes to search" will be automatically set to amount of adresses in range).
Random adresses - Corrupt random addresses in entire file.
File Length - Shows length of file (in HEX).

4. Search For Byte

Specified Byte (HEX) - Corrupt only bytes with specified value.
Byte Range (HEX) - Corrupt only specified range of bytes.
All Bytes - Corrupt any byte.

5. Address Testing (Hex Old-New-Address Patcher)

Add combos on corruption - Save results of corruption to list.
Clear combos every corruption - Lists will be cleared on each corruption.
<THREE LISTS> - First list contains "Old" value (before corrupting). Second list contains "New" value (after corrupting). Third list contains "Address", which was corrupted.
<THREE INPUT BOXES> - These boxes intended to add own values into three lists. Just like above, each input box pertains to "Old", "New" and "Address" list respectively.
Add Combination To List - Adds data from input boxes into lists.
Delete Selected Combinations From List - Removes highlighted combinations from list.
Clear Combination List - Clears list.
Apply Selected Combos To Current File - Patches file with highlighted combinations.
Revert (Old <-> New) - Reverts highlighted changes, by patching file with "Old" value.
Select All - Highlight all combinations.
Deselect All - Deselects all combinations.
Apply All - Applies each combination to file.
Revert All - Reverts all changes.
Save Combos - Store combinations to file for future usage.
Load Combos - Load previously saved combinations.
Original -> Corrupted - Overwrite corrupted file with original.
Corrupted -> Original - Overwrite original file with corrupted. Be sure to do backup of original file, if you doing that.
Hex-To-Dec - Small tool to convert hexadecimal values into decimal.
Dec-To-Hex - Small tool to convert decimal values into hexadecimal.
Notify On Old Value Mismatch - Notify if data in file doesn't matches "Old" value in combination.

6. Corrupted File Testing

File to execute - Path to program for testing (i.e. path to emulator executable, etc.).
Text before corrupted file path - Allows you to pass command line arguments, standing before path to corrupted file. Note that there won't be space, separating arguments and corrupted file path, you have to enter it manually in end, if needed.
Text after corrupted file path - Allows you to pass command line arguments, standing after path to corrupted file. Note that there won't be space, separating corrupted file path and arguments, you have to enter it manually in beginning, if needed.
Full Path To Corrupted File - Allows to pass full path as argument. If unchecked, only filename will be used. Note that this option is global, unchecking it will make entire program to use filename instead of full path.
Quote Corrupted File Path - If path to corrupted file contains spaces, use this option.
Execute - Run specified command.

7. Secret features

NOTE: I wanted CorrupTool to be usable in 800x600 screens, but eventually ran out of space on form. I was lazy to find good solution, so I made some "secret" unobvious features. This section covers them all.

7.1 Hidden Features

<ALL HEX INPUT BOXES> - If you double-click any of them, it will be cleared. Note that it's not limited to boxes, having "(HEX)", it's applicable to any box for entering hexadecimal values.
Now working with file - If you double-click input box, you will be asked if you want to delete original file.
Corrupted FileName - If you double-click input box, you will be asked if you want to delete corrupted file.
File to execute - If you double-click input box, corrupted file will be executed without program (if it's in fact, executable file).
File to execute - If you double-click text above input box, you will be asked if you want to kill application when clicking "Execute". That way you can force only one instance of test program to be running at time, without need to close program manually.
Corrupt File - Double-clicking empty space in groupbox has same effect as "Randomize" button.
<APP'S FORM> - Easter egg. Double-clicking empty space between groupboxes will show version info.
<VALUES IN COMBINATION LISTS> - Double-clicking value in one of lists allows you to modify it.
Increase By - Double-clicking will increase input box's value by 1. When increasing FF, it will become 00.
Decrease By - Double-clicking will decrease input box's value by 1. When decreasing 00, it will become FF.
Write Random - If you double-click it, you will be asked if you want to use random byte range instead of random byte (00-FF), so you can set it to generate only specified range of random bytes.
Write Specified Value - If you double-click it, you will be asked if you want to use custom byte sequence instead of single byte. In that mode, it will write repeated sequences of bytes. Note that sequence can be either ascending or descending. If low value is less than hi value, sequence will be ascending (like 00, 01, 02, etc). If low value is greater than hi value, sequence will be descending (like FF, FE, FD, etc).

Address range steps:
Allows to easily corrupt several fixed-sized ranges.
1. Double-clicking "-" between address range input boxes (in "Corruption Addresses") shows range step input box. Enter step that you want to shift on each corruption (in hex). For example, 00000100.
2. Enter initial range (for example, 00000000-00000100).
3. After that, double-clicking "Corrupt all bytes in range" will increment range by step (for example, 00000100-00000200), while double-clicking "Corrupt address range (HEX)" will decrement range by step.

7.2 Keyboard Shortcuts

Ctrl+A - Generates random name for corrupted file on each corruption. Obviously, doesn't works with fixed name mode.
Ctrl+F - Convenience mode for combo entering. Allows to enter combos into lists more quickly by automatically changing focus to next input box. When all three input boxes are filled, focus changed to "Add Combination To List" button, so you can just press enter to add it into list. After that, focus again changes to first input box.
Ctrl+N - Uses fixed name for corrupted file. Corrupted filename becames "corrupt.ext" (without quotes and with original file extension). That way it won't create lots of random-named corrupted files.
Ctrl+S - Synchronized combination list scrolling mode. Actually, it's synchronized even if it's disabled, but works only when you scroll with mouse wheel. So, this is "enhanced scrolling mode". It synchronizes lists both when scrolling with scrollbar or mouse wheel. However, it uses a slightly more resources, so it's disabled by default.
